tests: Add GLES shaders to testglarea
authorEmmanuele Bassi <ebassi@gnome.org>
Fri, 22 Apr 2016 12:53:16 +0000 (13:53 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Mon, 25 Apr 2016 13:35:02 +0000 (14:35 +0100)
Check if the GdkGLContext is using ES, and load the appropriate shaders
in that case.

tests/testglarea.c

index 764e2311b39d211a68407dc3186891ae978b372a..ef2bec8d395a6b09bc671c44f958439929310944 100644 (file)
@@ -80,6 +80,20 @@ create_shader (int type, const char *src)
   return shader;
 }
 
+static const char *vertex_shader_code_gles =
+"attribute vec4 position;\n" \
+"uniform mat4 mvp;\n" \
+"void main() {\n" \
+"  gl_Position = mvp * position;\n" \
+"}";
+
+static const char *fragment_shader_code_gles =
+"precision mediump float;\n" \
+"void main() {\n" \
+"  float lerpVal = gl_FragCoord.y / 400.0;\n" \
+"  gl_FragColor = mix(vec4(1.0, 0.85, 0.35, 1.0), vec4(0.2, 0.2, 0.2, 1.0), lerpVal);\n" \
+"}";
+
 static const char *vertex_shader_code_330 =
 "#version 330\n" \
 "\n" \
@@ -243,15 +257,23 @@ realize (GtkWidget *widget)
     return;
 
   context = gtk_gl_area_get_context (GTK_GL_AREA (widget));
-  if (!gdk_gl_context_is_legacy (context))
+  if (gdk_gl_context_get_use_es (context))
     {
-      vertex = vertex_shader_code_330;
-      fragment = fragment_shader_code_330;
+      vertex = vertex_shader_code_gles;
+      fragment = fragment_shader_code_gles;
     }
   else
     {
-      vertex = vertex_shader_code_legacy;
-      fragment = fragment_shader_code_legacy;
+      if (!gdk_gl_context_is_legacy (context))
+        {
+          vertex = vertex_shader_code_330;
+          fragment = fragment_shader_code_330;
+        }
+      else
+        {
+          vertex = vertex_shader_code_legacy;
+          fragment = fragment_shader_code_legacy;
+        }
     }
 
   init_buffers (&position_buffer, NULL);